/**
 * @ Author:Yoann Meclot. MSay2
 * @ Created on:2020-09-29 11:23:15
 * @ Modified on: 2021-06-14 18:59:19
 *
 * @version 1.1
 */
/**
 * Copyright (c) 2020-2021 MSay2 (Yoann Meclot) - @msay2/tspoet
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import { ObjectName } from "./ObjectName.js";
/**
 * TSProperty allows you to write an interface property.
 *
 * @class `TSProperty`
 * @version 1.0
 */
export declare class TSProperty
{
    /**
     * Init a builder for add a interface method or property.
     *
     * @param name The name of the method or property.
     * @throws {TSPoetException} Check if the name is undefined or null.
     * @type {Builder}
     * @since 1.0
     */
    public static propertyBuilder(name:string):TSProperty.Builder;

    static Builder:{
        new (name:string):{
            /**
             * Add parameter.
             *
             * @param name The parameter name.
             * @param objectName The parameter type.
             * @throws {TSPoetException} Check if the name parameter is undefined or null.
             * @throws {TSPoetException} Check if the ObjectName object is undefined or null.
             * @type {TSProperty.Builder}
             * @since 1.0
             */
            addParameter(name:string, objectName:ObjectName):TSProperty.Builder;

            /**
             * Add documentation.
             *
             * @param arg Your documentation.
             * @throws {TSPoetException} Check if the doc is undefined or null.
             * @type {TSProperty.Builder}
             * @since 1.0
             */
            addDoc(arg:string):TSProperty.Builder;

            /**
             * Set return type.
             *
             * @param objectName The return type.
             * @throws {TSPoetException} Check if the ObjectName object is undefined or null.
             * @type {TSProperty.Builder}
             * @since 1.0
             */
            return(objectName:ObjectName):TSProperty.Builder;

            /**
             * Build property.
             *
             * @type {TSProperty}
             * @since 1.0
             */
            build():TSProperty;
        };
    };
    
    private constructor(builder:TSProperty.Builder);
}
export declare namespace TSProperty
{
    type Builder = InstanceType<typeof TSProperty.Builder>;
}
//# sourceMappingURL=TSProperty.d.ts.map